import 'dart:async';

import 'package:demo/empUtils/EMPColorUtils.dart';
import 'package:demo/empUtils/EMPThemeUtils.dart';
import 'package:flutter/material.dart';
import 'package:demo/empUtils/EMPTextStyle.dart';

import 'empUtils/EMPTextStyle.dart';
import 'package:flutter_sticky_header/flutter_sticky_header.dart';
import 'package:flutter/cupertino.dart';
import 'package:demo/empUtils/FontSizeModel.dart';

class testListPage extends StatefulWidget {
  const testListPage({super.key});

  @override
  _testListPageState createState() => _testListPageState();
}

class _testListPageState extends State<testListPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(appBar: AppBar(title: const Text('测试列表')), body: _buildbody());
  }

  Widget _buildbody() {
    return CustomScrollView(
      ///自定义滚动视图的组件
      scrollDirection: Axis.vertical,
      /// 滚动方向
      slivers: [for (int i = 0; i < 8; i++) _buildGroup(i)],
    );
  }

  Widget _buildGroup(int index) {
    return SliverStickyHeader(
        sticky: false,
        ///将子组件在主轴方向上进行布局的组件
        header: Container(
          height: 60.0,
          width: double.infinity,
          color: Colors.lightBlue,
          padding: EdgeInsets.only(left: 16.0),
          alignment: Alignment.centerLeft,
          child: Text(
            '测试组头数字叠加${index + 1}',
            style: const TextStyle(color: Colors.white),
          ),
        ),
        sliver: SliverList(
            ///滚动列表的组件
            delegate: SliverChildBuilderDelegate((context, index) {
          return _buildItem(index);
        }, childCount: index + 1)));
  }

  Widget _buildItem(int i) {
    return Container(
        height: 72,
        width: double.infinity,

        ///占用范围内最大空间
        padding: const EdgeInsets.all(15),
        decoration: BoxDecoration(
            color: Colors.grey,
            border: Border(bottom: Divider.createBorderSide(context, width: 0.8))),
        child: IndexedSemantics(
          ///根据提供的索引为子组件添加语义信息
          index: i,
          child: Stack(
              ///堆叠布局，用于将多个子组件叠加显示
              children: [
                // Text(i.isEven ? 'cell的标题111111ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1ell的标题1' : 'cell的标题222'),
                Positioned(
                    ///指定子组件的位置。
                    top: 0,
                    bottom: 0,
                    left: 0,
                    right: 0,
                    child: _text(),

                    // child: Text(i.isEven ? '右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk右上角asdhkjahdk1111111' : '右上角',
                    //     style: i.isEven
                    //         ? TextStyle(
                    //             color: Theme.of(context).colorScheme.error,
                    //             fontWeight: FontWeight.bold,
                    //           )
                    //         : EMPTextStyle.textBold14)
                ),
                // Positioned(
                //     bottom: 0,
                //     left: 0,
                //     child: Text(i.isEven ? '左下角' : '左下角',
                //         style: Theme.of(context).textTheme.titleSmall)),
                // const Positioned(
                //     bottom: 0, right: 0, child: Text('右下角文字', style: TextStyle(color: Colors.red)))
              ]),
        ));
  }

  Widget _text() {
    return SizedBox(
      //width很重要，不设置宽度的话内容会不显示，Row要知道父Widget宽度
      width: 100,
      //使用Row+Expanded包裹Text文本就会自适应高度
      child: Row(
        children: const [

          // Consumer<FontSizeModel>(
          //   builder: (fontSizeModel) {
          //     return Text(
          //       "看大书记大书记啊还贷款计划阿娇还是空"
          //           "大书记宏杰间大11111111111",
          //       style: EMPTextStyle.textBold16,
          //     );
          //   },
          // ),

          Expanded(

            child: Text(
                  "看大书记大书记啊还贷款计划阿娇还是空"
                  "大书记宏杰间大11111111111",
              style: EMPTextStyle.textBold16,
            ),
          ),
        ],
      ),
    );
  }

}



//自定义组头代理
class SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
  SliverAppBarDelegate(this.widget, this.height);

  final Widget widget;
  final double height;

  // minHeight 和 maxHeight 的值设置为相同时，header就不会收缩了
  @override
  double get minExtent => height;

  @override
  double get maxExtent => height;

  @override
  Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
    return widget;
  }

  @override
  bool shouldRebuild(SliverAppBarDelegate oldDelegate) {
    return true;
  }
}




///tips
///1: i.isEven（用于判断一个整数是否为偶数。如果 i 是偶数，则 i.isEven 返回 true；如果 i 是奇数，则返回 false。）
